QT项目pro文件检测PATH,兼论contains使用

您所在的位置:网站首页 contains files QT项目pro文件检测PATH,兼论contains使用

QT项目pro文件检测PATH,兼论contains使用

2024-06-14 00:44| 来源: 网络整理| 查看: 265

想在qt的项目文件 pro 文件中设置环境变量PATH检测,以避免程序启动缺少相关的dll文件,便于项目备份迁移时候提醒。

可设置了 contains ,几乎不起作用。

官方说明:

contains(variablename, value)

Succeeds if the variable variablename contains the value value; otherwise fails. It is possible to specify a regular expression for parameter value.

You can check the return value of this function using a scope.

For example:

contains( drivers, network ) { # drivers contains 'network' message( "Configuring for network build..." ) HEADERS += network.h SOURCES += network.cpp }

The contents of the scope are only processed if the drivers variable contains the value network. If this is the case, the appropriate files are added to the SOURCES and HEADERS variables.

这里其实是一个坑,这个contains不是包含network,而是包含某个item,一项是network。而每个项的分隔符是空格,所以范例中的network是一个字。如果drivers中包含 network-script,则contains(drivers,network)这个表达式结果是false。而环境变量 PATH的分割符是分号“;”,所以这个contains不能直接用。

修改如下:

通过split函数分割;的每个项目,这样处理结果传递给PATH变量,这样的变量能被contains处理,也支持每个小项中包含空格。

 

这样就通过了,如果PATH没有对应的MYLIB目录,编译生成停止。

 

后记Mac OS X

本来以为Mac OS X 下需要处理 DYLD_LIBRARY_PATH 变量。结果出乎意料

感觉 QT在构建和运行时候,环境是不一样的。

构建的时候

构建时候环境变量 构建时候的环境变量

 

运行的环境变量

可以看到, pro 文件运行 qmake构建的时候,DYLD_LIBRARY_PATH是没有的。此时的检测DYLD_LIBRARY_PATH是没有意义的。而且好像无需另外的 .profile的bash中设置。构建时候会根据打开时候的pro文件,在lib里自动添加。

就是修改完毕pro文件后,最好退出QT Creator 一次。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3